package render

const (
	CODE_OK        = 200
	CODE_VALID_ERR = 400
	CODE_NO_LOGIN  = 401
	CODE_NO_AUTH   = 403
	CODE_ERR       = 500
)

type RespData[T any] struct {
	Code int    `json:"code" description:"结果编码"`
	Msg  string `json:"msg" description:"提示信息"`
	Data T      `json:"data" description:"返回数据"`
}

// TypeName implements openapi.Typer interface for RespData.
func (*RespData[T]) TypeName() string {
	return "RespData"
}

func OkResp[T any](data T) RespData[T] {
	return RespData[T]{
		Code: CODE_OK,
		Data: data,
	}
}

func ErrResp[T any](msg string, data T) RespData[T] {
	return RespData[T]{
		Code: CODE_ERR,
		Msg:  msg,
		Data: data,
	}
}

func NoLogin[T any](msg string) RespData[T] {
	return RespData[T]{
		Code: CODE_NO_LOGIN,
		Msg:  msg,
	}
}
func NoAuth[T any](msg string) RespData[T] {
	return RespData[T]{
		Code: CODE_NO_AUTH,
		Msg:  msg,
	}
}

func ValidError[T any](msg string) RespData[T] {
	return RespData[T]{
		Code: CODE_VALID_ERR,
		Msg:  msg,
	}
}
